/*
 Copyright (C) 2007 - Michael Opitz
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
 as published by the Free Software Foundation; either version 2
 of the License, or (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
#ifndef MY_SSL_H
#define MY_SSL_H

#include <openssl/ssl.h>
#include <openssl/err.h>
#include <stdio.h>
#include <malloc.h>
#include <sys/socket.h>
#include <resolv.h>
#include <netdb.h>
#include <assert.h>
#include <unistd.h>


typedef struct {
	SSL_CTX *_ctx;
} ssl_system;

typedef struct {
	int _sock;
	SSL *_ssl;
} ssl_socket;

ssl_system* init_ssl();
void free_ssl(ssl_system *sys);

void close_socket(ssl_system *sys, ssl_socket *sock);
ssl_socket* open_socket(ssl_system *sys, const char *hostname, int port);
void write_sock(ssl_system *sys, ssl_socket *sock, const char *msg);
int read_sock(ssl_system *sys, ssl_socket *sock, char *buff, int size);

#endif
